#pragma once

//#include "Renderer.h"

namespace mgfx
{
	class Graphics
	{
	public:
		Graphics();
		~Graphics();

		void resetOMTargetsAndViewport();

		void init(HWND hwnd, int clientWidth, int clientHeight);
		void onResize();
		void preDraw();
		void postDraw();

		void updateTimer(float dt);

	private:
		void initDirect3D();

		//Renderer mRenderer;

		HWND mhMainWnd;

		std::string mFrameStats;
 
		ID3D11Device*           mDevice;
		ID3D11DeviceContext*    mDeviceContext;
		IDXGISwapChain*         mSwapChain;
		ID3D11Texture2D*        mDepthStencilBuffer;
		ID3D11RenderTargetView* mRenderTargetView;
		ID3D11DepthStencilView* mDepthStencilView;
		//ID3DX10Font* mFont;

		D3D_DRIVER_TYPE   mDriverType;
		D3D_FEATURE_LEVEL mFeatureLevel;

		XMCOLOR4F mClearColor;
		int mClientWidth;
		int mClientHeight;
	};


}
